lib/repo: Auto-recreate repo/tmp if it's deleted
authorColin Walters <walters@verbum.org>
Wed, 19 Jul 2017 14:35:06 +0000 (10:35 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Wed, 19 Jul 2017 15:01:19 +0000 (15:01 +0000)
We can accumulate a lot of space there; let's be nice to people who delete the
whole directory.

Closes: https://github.com/ostreedev/ostree/issues/1018
Closes: #1020
Approved by: jlebon

src/libostree/ostree-repo.c
tests/basic-test.sh

index 3c09079dce176a314a5ec055044ab08cb55121ad..a009f1c82c39c7c7d3ed51bd3cd02a00ae062849 100644 (file)
@@ -2201,6 +2201,20 @@ ostree_repo_open (OstreeRepo    *self,
       self->target_owner_uid = self->target_owner_gid = -1;
     }
 
+  if (self->writable)
+    {
+      /* Always try to recreate the tmpdir to be nice to people
+       * who are looking to free up space.
+       *
+       * https://github.com/ostreedev/ostree/issues/1018
+       */
+      if (mkdirat (self->repo_dir_fd, "tmp", 0755) == -1)
+        {
+          if (G_UNLIKELY (errno != EEXIST))
+            return glnx_throw_errno_prefix (error, "mkdir(tmp)");
+        }
+    }
+
   if (!glnx_opendirat (self->repo_dir_fd, "tmp", TRUE, &self->tmp_dir_fd, error))
     return FALSE;
 
index 33fdde9d6ce21eafdfe58aae84d3d9d722a4fc3c..9ae26f47e42ef908a0839cce4f186ae8ee488229 100644 (file)
@@ -19,7 +19,7 @@
 
 set -euo pipefail
 
-echo "1..$((69 + ${extra_basic_tests:-0}))"
+echo "1..$((70 + ${extra_basic_tests:-0}))"
 
 $CMD_PREFIX ostree --version > version.yaml
 python -c 'import yaml; yaml.safe_load(open("version.yaml"))'
@@ -112,6 +112,14 @@ ostree_repo_init test-repo --mode=bare-user
 rm test-repo -rf
 echo "ok repo-init on existing repo"
 
+rm test-repo -rf
+ostree_repo_init test-repo --mode=bare-user
+${CMD_PREFIX} ostree --repo=test-repo refs
+rm -rf test-repo/tmp
+${CMD_PREFIX} ostree --repo=test-repo refs
+assert_has_dir test-repo/tmp
+echo "ok autocreate tmp"
+
 rm checkout-test2 -rf
 $OSTREE checkout test2 checkout-test2
 cd checkout-test2